﻿define(['jquery'], function ($) {
    var defaults = {
        url: "/Category/List",
        singleUrl: "/Category/Get",
        container: $('#js-category'),
        clsFmt: 'cmb',
        binder: ''
    };
    //级联分类下拉框
    var initCmb = function (params) {
        defaults.container = params.container;
        defaults.binder = params.binder;
        if (params.selectedValue) {
            selected(params.selectedValue);
            return;
        }
        initEvent(0);
    };
    var initEvent = function (id) {
        getData(id, 0);
        $('.cmb0').on('change', function () {
            $(".cmb1").remove();
            if ($(this).val() && parseInt($(this).val()) > 0) {
                getData($(this).val(), 1);
                $(defaults.binder).val($(this).val());
                $('.cmb1').die('change').live('change', function() {
                    $(defaults.binder).val($(this).val());
                });
            }
        });
    };
    var selected = function(id) {
        getData(0, 0);
        $('.cmb0').on('change', function() {
            $(".cmb1").remove();
            if ($(this).val() && parseInt($(this).val()) > 0) {
                getData($(this).val(), 1);
                $(defaults.binder).val($(this).val());
            }
        });
        if (id > 0) {
            $.ajax({
                url: defaults.singleUrl,
                type: 'get',
                data: { id: id },
                success: function(data) {
                    if (data.IsSuccess) {
                        if (data.Value.ParentCategoryInfo) {
                            $('.cmb0').val(data.Value.ParentCategoryInfo.Id);
                            getData(data.Value.ParentCategoryInfo.Id, 1);
                            $('.cmb1').val(id);
                        } else {
                            $('.cmb0').val(id);
                            getData(id, 1);
                        }
                    }
                }
            });

        }
        $('.cmb1').die('change').live('change', function() {
            $(defaults.binder).val($(this).val());
        });
    };
    var getData = function (pid, level) {
        $.ajax({
            url: defaults.url,
            type: 'get',
            data: { id: pid },
            async: false,
            success: function (data) {
                if (data.IsSuccess) {
                    createLowerCmb(data.Value, level, pid);
                }
            }
        });
    };

    var createLowerCmb = function (val, level, topval) {
        var tempHtml = '';
        tempHtml = '<select class="' + defaults.clsFmt + level + '">';
        if (topval) {
            tempHtml += '<option value="' + topval + '">全部</option>'
        } else {
            tempHtml += '<option value="-1">全部</option>'
        }
        for (var o in val) {
            tempHtml += '<option value="' + val[o]["Id"] + '">' + val[o]["Name"] + '</option>';
        }
        tempHtml += '</select>';
        $(defaults.container).append(tempHtml);
    };

    return {
        initCmb: initCmb
    };
});